<?php
/**
 * 遍历文件夹
 * @param string $dir
 * @param boolean $all true表示递归遍历
 * @return array
 */
function scanfDir($dir = '', $all = false, &$ret = array())
{
    if (false !== ($handle = opendir($dir))) {
        while (false !== ($file = readdir($handle))) {
            if (!in_array($file, array('.', '..', '.git', '.gitignore', '.svn', '.htaccess', '.buildpath', '.project'))) {
                $cur_path = $dir . '/' . $file;
                if (is_dir($cur_path)) {
                    $ret['dirs'][] = $cur_path;
                    $all && scanfDir($cur_path, $all, $ret);
                } else {
                    $ret ['files'] [] = $cur_path;
                }
            }
        }
        closedir($handle);
    }
    return $ret;
}


//用PHP封装的一个类，显示/删除文件目录下的所有文件及空目录，同时可以删除目录或文件名为0的目录及文件

class file
{
    static public function ShowDir($path, $level = 0)
    {
        $dir = opendir($path);
        while (($file = readdir($dir)) !== false) {
            if ($file != '.' && $file != '..') {
                $filepath = $path . '/' . $file;
                for ($i = 0; $i < $level * 5; $i++) {
                    echo "&nbsp;";
                }
                echo $file . '<br>';
                if (is_dir($filepath)) {
                    static::ShowDir($filepath, $level + 1);
                }
            }
        }
        closedir($dir);
    }

    static public function DeleteDir($path)
    {
        $dir = opendir($path);
        while (($file = readdir($dir)) !== false) {
            if ($file != '.' && $file != '..') {
                $filepath = $path . '/' . $file;
                if (is_dir($filepath)) {
                    self::DeleteDir($filepath);
                } else {
                    unlink($filepath);
                }
            }
        }
        closedir($dir);
        rmdir($path);
    }
}

?>